package cn.com.klun.util;

import cn.com.klun.tjy.dao.entity.TblTaskBasicConfig;
import org.apache.commons.lang.StringUtils;

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;
import java.util.Properties;

/** 
 * @ClassName: QueryServerInfo 
 * @Description: 判断此任务需要单台机器执行 
 * @author chenmin-ds 
 * @date 2015年2月4日 上午10:04:28  
 */
public class QueryServerInfo {
	

    /** IP */
    public static String LOCAL_IP_HOST = "";
    
    /**
    * @Title: checkIp 
    * @Description: 判断此任务需要单台机器执行
    * 当serverIp为空时，创建此任务，返回true;
    * 当serverIp与当前服务器IP相符时，创建此任务，返回true;
    * 当serverIp与当前服务器IP不相符时，不创建此任务，返回false;
    * @param config
    * @return boolean    返回类型 
    * @throws
     */
    public static boolean checkIp(TblTaskBasicConfig config){
    	if(StringUtils.isNotEmpty(config.getServerIp())){
    		if(StringUtils.isEmpty(LOCAL_IP_HOST)){
    			initLocalIp(config.getInternetName());
    		}
    		if(config.getServerIp().indexOf(LOCAL_IP_HOST) >= 0){
    			return true;
    		}
    		return false;
    	}
    	return true;
    }

	/**
	 * 初始化本地服务器的ip.
	 */
	public static void initLocalIp(String internetName) {
		try {
			Properties prop = System.getProperties();
			String os = prop.getProperty("os.name");
			System.out.println("服务器系统版本：" + os);
			if (os.startsWith("win") || os.startsWith("Win")) {
				InetAddress addr = InetAddress.getLocalHost();
				LOCAL_IP_HOST = addr.getHostAddress().toString();// 获得本机IP
			}else{
				Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces();
				String address = "";
				while (netInterfaces.hasMoreElements()) {
					NetworkInterface ni = netInterfaces.nextElement();
					Enumeration<InetAddress> ips = ni.getInetAddresses();
					if(ni.getName().equals(internetName)){
						while (ips.hasMoreElements()) {
							address = ips.nextElement().getHostAddress();
							System.out.println("IP地址：" + address);
							if (address.split("\\.").length == 4) {
								LOCAL_IP_HOST = address;
								return;
							}else{
								address = "";
							}
						}
					}
				}
			}
		} catch (Exception e) {
			System.out.println("获取服务器本地IP异常" + e.getMessage());
		}
	}
	
}
